package {
	import br.com.ruidobrasil.acessorestrito.AcessoRestritoView;
	import br.com.ruidobrasil.util.TratamentoErros;
	import br.com.ruidobrasil.vo.UsuarioVO;
	
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	import mx.controls.Alert;
	import mx.events.CloseEvent;
	import mx.events.FlexEvent;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.events.ResultEvent;
	
	
	public class AcessoRestrito extends AcessoRestritoView {
		
		private var _telaPai: RuidoBrasil;
		private var _usuarioVO: UsuarioVO;
		
		public function AcessoRestrito() {
			super();
			
			this.addEventListener(FlexEvent.CREATION_COMPLETE, init);
			
			include 'br/com/ruidobrasil/util/RegistroVOs.as';
		}
		
		private function init(event: FlexEvent): void {
			
			_telaPai.vs1.resizeToContent;
			
			btnAcessar.addEventListener(MouseEvent.CLICK, acessar);
			btnSair.addEventListener(MouseEvent.CLICK, sair);
			
			twAutenticacao.addEventListener(CloseEvent.CLOSE, sair);
			
			rm.autenticar.addEventListener(ResultEvent.RESULT, resultAcessar);
			rm.autenticar.addEventListener(FaultEvent.FAULT, TratamentoErros.fault);
			
			limparDados();
		}
		
		private function acessar(event: MouseEvent): void {
			
			if (validarDados()) {
				
				if (txtSenha.text.length < 8) {
					Alert.show("A senha deve conter 8 caracteres.", "Erro!");
					return;
				}
				
				var novaVO: UsuarioVO = new UsuarioVO();
				novaVO.login = txtLogin.actualText;
				novaVO.senha = txtSenha.text;
				
				rm.autenticar(novaVO);
			}
		}
		
		private function resultAcessar(result: ResultEvent): void {
			_usuarioVO = result.result.dados.vo;
			
			if (_usuarioVO.usuarioAutenticado) {
				vs1.selectedChild = aplicacao;
				aplicacao.lblUsrLogado.text = "Seja bem vindo " + _usuarioVO.login + ".";
				aplicacao.idUsuarioLogado = _usuarioVO.idUsuario;
			} else {
				vs1.selectedChild = autenticacao;
				Alert.show("Usuário e/ou senha inválidos.", "Aviso!");
			}
		}
		
		private function validarDados(): Boolean {
			
			var msg: String = "O campo ";
			var validacaoOk: Boolean = true;
			
			if (txtLogin.text == "") {
				msg += "Login";
				validacaoOk = false;
				
			} else if (txtSenha.text == "") {
				msg += "Senha";
				validacaoOk = false;
				
			}
			
			msg += " é de preenchimento obrigatório.";
			
			if (!validacaoOk) {
				Alert.show(msg, "Erro!");
			}
			
			return validacaoOk;
		}
		
		public function limparDados(): void {
			txtLogin.text = "THIAGO";
			txtSenha.text = "12345678";
			txtLogin.setFocus();
		}
		
		private function sair(event: Event = null): void {
			_telaPai.abrirSite();
		}
		
		public function abrirTelaAutenticacao(): void {
			limparDados();
			this.vs1.selectedChild = autenticacao;
		}

		public function set telaPai(telaPai: RuidoBrasil): void {
			_telaPai = telaPai;
		}
		
		public function get usuarioVO(): UsuarioVO {
			return _usuarioVO;
		}
	}
}